(1) Field of the Invention:
The present invention relates to a behavioral synthesis system, behavioral synthesizing method, and program, that is capable synthesizing a circuit description having a low of abstractness from a behavioral-level description.
(2) Description of the Related Art:
In recent years, due to an increase in the size of semiconductor circuits, a variety of approaches have been used for reducing effort and time in designing semiconductor circuits. One such approach proposes the use a behavioral synthesis system for synthesizing a circuit description at low abstractness such as RTL (Register Transfer Level) and the like. The use of such a behavioral synthesis system hardware logic behavior, the configuration of data paths, and the like to be automatically designed from a behavioral-level description which simply hardware logic behavior.
In a behavioral-level description intended to synthesize behavior in such a behavioral synthesis system, when functions are layered such that they are divided into an caller function and a callee function which are connected through a pointer, the pointer must be eliminated in order to synthesize the behavior of the caller function.
Examples of conventional behavioral synthesis systems when a pointer is used in a behavioral-level description are described, for example, in JP-A-2001-27334, and Luc Semeria, Giovanni De Micheli, “SpC: Synthesis of Pointers in C. Application of Pointer Analysis to the Behavioral Synthesis from C,” Proceedings of the International Conference on Computer-Aided Design ICCAD'98, pp. 340-346, San Jose, December 1998.
As illustrated in FIG. 1 of JP-A-2001-273347, this conventional behavioral synthesis system comprises language analyzing means (language analyzer), function inline expanding means (function inline expander), pointer analyzing means (pointer analyzer), pointer elimination means (pointer eliminator), and behavioral synthesizing means (behavioral synthesizer).
The conventional behavioral synthesis system having the configuration as mentioned above operates in the following manner. Specifically, functions are inline-expanded after language analysis in order to eliminate pointers used in arguments and the like across functions. Subsequently, pointers are analyzed and eliminated, followed by execution of conventional behavioral synthesis processing (scheduling, binding, RTL description generation processing and the like).
In this conventional behavioral synthesis system, details of a callee function must be determined at a caller function binding stage in order to statically eliminate a pointer. Therefore, this system has a problem that the callee function must be inline-expanded during the behavioral synthesis when layered functions are connected through a pointer in a behavioral-level description.
Then, since a description of the callee function is required upon behavioral synthesis for the caller function in order to inline-expand the callee function, the conventional behavioral synthesis system cannot implement a callee function having a pointer in an argument at a later time or replace implementations. As such, the conventional system fails to provide a design flow which allows the caller function to be completely independent of the implementation of the callee function upon synthesis of the caller function.
Also, when a description of a callee function is inline-expanded within the caller function, an increased number of variables and conditions must be checked when the caller function is debugged, so that the system also suffers from the detrimental effect of a reduction in the efficiency of debugging the circuit after synthesizing behavioral of functions.
Further, since the conventional behavioral synthesis system synthesizes behavioral while a description written within a callee function remains expanded, a longer time may be required due to the need for a wider search space in an analysis on descriptions by a tool, scheduling and the like, possibly resulting synthesizing the behavior of an caller function at a long time.
Furthermore, when the same callee function is called from caller functions at a plurality of locations, the inline expansion can result in the creation of a number of circuit entities equal to the number of times of calls, difficulty in sharing, and a consequent increase in the area of a circuit that is caused by the behavioral synthesis.
In the conventional behavioral synthesis system described above, details of a callee function must be determined at a caller function binding stage in order to statically solve a pointer. Therefore, this system has a problem that the callee function must be inline-expanded during the behavioral synthesis when layered functions are connected through a pointer in a behavioral-level description.